package com.yeeverse.sdk.vo.api.subMerchantApply;


import com.yeeverse.sdk.vo.api.BaseRequest;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * @author rongjie.wen
 * @Description
 * @Date:Create 2021/8/5
 */
public class RegistRequestDTO extends BaseRequest implements Serializable {
    private static final long serialVersionUID = -2639282609500536543L;

    /**
     * 平台商编号，支付平台平台商编号
     * Y
     */

    /**
     * 支付平台子商户入网上传请求号
     * Y
     */
    private String requestNo;
    /**
     * 入网子商户全称
     * Y
     */
    private String merchantName;

    /**
     * 入网子商户简称，收银台展示名称
     * Y
     */
    private String merchantShortName;

    /**
     * 入网子商户主体类型枚举：
     * ENTERPRISE-企业
     * INDIVIDUAL-个体工商户
     * MICRO_MERCHANT-小微商户（个人）
     * Y
     */
    private String organizationType;

    /**
     * 入网子商户的营业执照编号；
     * 仅商户主体为企业和个体工商户此参数必填
     * N
     */
    private String businessLicense;

    /**
     * 入网子商户的营业执照起始时间；
     * 仅商户主体为企业和个体工商户此参数必填；格式为yyyy-MM-dd
     * N
     */
    private String institutionDateStart;
    /**
     * 入网子商户的营业执照结束时间；
     * 仅商户主体为企业和个体工商户此参数必填，需大于当前系统时间；
     * 格式为yyyy-MM-dd，如长期有效可传：长期
     * N
     */
    private String institutionDateEnd;

    /**
     * 商户注册所属省份，详情参考附录：商户地区编码表
     * Y
     */
    private String province;
    /**
     * 商户注册所属市，详情参考附录5.4：商户地区编码表
     * Y
     */
    private String city;
    /**
     * 商户注册所属区，详情参考附录5.4：商户地区编码表
     * Y
     */
    private String area;
    /**
     * 填写商户经营场所详细地址信息
     * Y
     */
    private String regAddress;
    /**
     * 填写商户经营一级大类信息，如：电商/团购、线下零售等；详情参考附录5.5：商户经营类别信息表
     * Y
     */
    private String businessType;
    /**
     * 填写商户经营二级明细类别信息，如：线上商超、便利店等；详情参考附录5.5：商户经营类别信息表
     * Y
     */
    private String businessTypeTwo;
    /**
     * 入网子商户法人全名，小微商户填写实际经营者名字即可
     * Y
     */
    private String legalPerson;
    /**
     * 入网法人证件类型：
     * IDCARD-身份证
     * PASSPORT-护照
     * OTHER-其他证件类型
     * Y
     */
    private String legalCardType;
    /**
     * 入网子商户法人证件号码，小微商户填写实际经营者证件号码即可
     * Y
     */
    private String legalIdCard;
    /**
     * 入网子商户的法人证件起始时间；格式为yyyy-MM-dd
     * Y
     */
    private String legalCardDateStart;
    /**
     * 入网子商户的法人证件结束时间，需大于当前系统时间；格式为yyyy-MM-dd，如长期有效可传：长期
     * Y
     */
    private String legalCardDateEnd;
    /**
     * 入网子商户联系人全名，小微商户填写实际经营者名字即可
     * Y
     */
    private String contactPerson;
    /**
     * 入网联系人证件类型：
     * IDCARD-身份证
     * PASSPORT-护照
     * OTHER-其他证件类型
     * Y
     */
    private String contactsCardType;
    /**
     * 入网子商户联系人证件号码，小微商户填写实际经营者证件号码即可
     * Y
     */
    private String contactsIdCard;
    /**
     * 入网子商户的联系人证件起始时间；格式为yyyy-MM-dd
     * Y
     */
    private String contactsCardDateStart;
    /**
     * 入网子商户的联系人证件结束时间，需大于当前系统时间；格式为yyyy-MM-dd，如长期有效可传：长期
     * Y
     */
    private String contactsCardDateEnd;
    /**
     * 入网子商户的联系人手机号码
     * Y
     */
    private String contactsPhone;
    /**
     * 入网子商户的联系人邮箱地址
     * Y
     */
    private String contactsEmail;
    /**
     * 入网子商户的客服联系电话
     * Y
     */
    private String servicePhone;
    /**
     * 平台商的支付域名，仅平台商自建收银台必传该参数
     * N
     */
    private String payDomain;
    /**
     * 平台商户线上商城全称
     * Y
     */
    private String mallName;
    /**
     * 平台商户线上商城链接
     * Y
     */
    private String merchantLink;
    /**
     * 如开通产品涉及个人网银支付/企业网银支付，此参数必传；备案号填平台商的即可
     * N
     */
    private String icpRecord;
    /**
     * 如开通产品涉及支付宝，此参数必传；支付账号为各子商户开通企业支付宝账号的邮箱或手机号
     * N
     */
    private String alipayAccount;
    /**
     * N
     */
    private String wxAppId;
    /**
     * 子商户入驻完成后，读取该地址推送商户入网成功回调通知信息；如未填写，默认不推送商户入网成功回调通知
     * N
     */
    private String serverCallbackUrl;
    /**
     * 入网子商户结算方式枚举：
     * PRIVATE_CASH-对私
     * PUBLIC_CASH-对公
     * 商户主体为企业或个体工商户，对应结算方式为PUBLIC_CASH；商户主体为小微商户，对应结算方式为PRIVATE_CASH
     * Y
     */
    private String bankAccountType;
    /**
     * 商户主体为企业或个体工商户，对应结算名称为商户全称；商户主体为小微商户，对应结算名称为法人姓名
     * Y
     */
    private String accountName;
    /**
     * 商户主体为企业或个体工商户，对应结算账号为对公账号；商户主体为小微商户，对应结算账号为个人银行卡账号
     * Y
     */
    private String bankAccountNo;
    /**
     * 子商户结算账户开户行支行联行号；详见附录5.6商户结算银行信息表
     * Y
     */
    private String bankBranchCode;
    /**
     * 对公银行账号开户许可证编号；仅商户主体为企业或个体工商户必填
     * N
     */
    private String openAccountNo;
    /**
     * 支付产品明细，详见下表，可以一次传多个，传支付产品明细对应的list数据
     * [
     * {
     * "payProduct": " ALIPAY_H5",
     * "feeRate": "0.03"
     * }
     * ]
     * Y
     */
    private List<PayProductDetailsDTO> payProductDetails;
    /**
     * 商户资质信息明细，如营业执照、法人身份证等；详见下表，可以一次传多个，传商户资质明细对应list数据
     * [
     * {
     * "BUSINESS_LICENSE": "图片文件标识ID"
     * },
     * {
     * "ID_CARD_FRONT": "图片文件标识ID"
     * },
     * {
     * "HOLD_CARD_PHOTO": "图片文件标识ID"
     * }
     * ]
     * Y
     */
    private List<Map<String, String>> qualificationsDetails;


    /**
     * 新加支付场景信息 20221124
     */
    /** pcTestAcct: "PC端测试账号"*/
    private String pcTestAcct;
    /** pcTestPwd: "PC端测试账号密码"*/
    private String pcTestPwd;
    private String merchantCallBack;
    /** h5StoreLink: "手机端网站地址"*/
    private String h5StoreLink;
    /** h5StoreName: "手机端网站名称"*/
    private String h5StoreName;
    /** h5TestAcct: "手机端测试账号"*/
    private String h5TestAcct;
    /** h5TestPwd: "手机端测试账号密码"*/
    private String h5TestPwd;
    /**
     * ["PC", "H5"] 支付场景
     */
    private List<String> paySceneList;


    public String getPcTestAcct() {
        return pcTestAcct;
    }

    public void setPcTestAcct(String pcTestAcct) {
        this.pcTestAcct = pcTestAcct;
    }

    public String getPcTestPwd() {
        return pcTestPwd;
    }

    public void setPcTestPwd(String pcTestPwd) {
        this.pcTestPwd = pcTestPwd;
    }

    public String getMerchantCallBack() {
        return merchantCallBack;
    }

    public void setMerchantCallBack(String merchantCallBack) {
        this.merchantCallBack = merchantCallBack;
    }

    public String getH5StoreLink() {
        return h5StoreLink;
    }

    public void setH5StoreLink(String h5StoreLink) {
        this.h5StoreLink = h5StoreLink;
    }

    public String getH5StoreName() {
        return h5StoreName;
    }

    public void setH5StoreName(String h5StoreName) {
        this.h5StoreName = h5StoreName;
    }

    public String getH5TestAcct() {
        return h5TestAcct;
    }

    public void setH5TestAcct(String h5TestAcct) {
        this.h5TestAcct = h5TestAcct;
    }

    public String getH5TestPwd() {
        return h5TestPwd;
    }

    public void setH5TestPwd(String h5TestPwd) {
        this.h5TestPwd = h5TestPwd;
    }

    public List<String> getPaySceneList() {
        return paySceneList;
    }

    public void setPaySceneList(List<String> paySceneList) {
        this.paySceneList = paySceneList;
    }

    public String getRequestNo() {
        return requestNo;
    }

    public void setRequestNo(String requestNo) {
        this.requestNo = requestNo;
    }

    public String getMerchantName() {
        return merchantName;
    }

    public void setMerchantName(String merchantName) {
        this.merchantName = merchantName;
    }

    public String getMerchantShortName() {
        return merchantShortName;
    }

    public void setMerchantShortName(String merchantShortName) {
        this.merchantShortName = merchantShortName;
    }

    public String getOrganizationType() {
        return organizationType;
    }

    public void setOrganizationType(String organizationType) {
        this.organizationType = organizationType;
    }

    public String getBusinessLicense() {
        return businessLicense;
    }

    public void setBusinessLicense(String businessLicense) {
        this.businessLicense = businessLicense;
    }

    public String getInstitutionDateStart() {
        return institutionDateStart;
    }

    public void setInstitutionDateStart(String institutionDateStart) {
        this.institutionDateStart = institutionDateStart;
    }

    public String getInstitutionDateEnd() {
        return institutionDateEnd;
    }

    public void setInstitutionDateEnd(String institutionDateEnd) {
        this.institutionDateEnd = institutionDateEnd;
    }

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getArea() {
        return area;
    }

    public void setArea(String area) {
        this.area = area;
    }

    public String getRegAddress() {
        return regAddress;
    }

    public void setRegAddress(String regAddress) {
        this.regAddress = regAddress;
    }

    public String getBusinessType() {
        return businessType;
    }

    public void setBusinessType(String businessType) {
        this.businessType = businessType;
    }

    public String getBusinessTypeTwo() {
        return businessTypeTwo;
    }

    public void setBusinessTypeTwo(String businessTypeTwo) {
        this.businessTypeTwo = businessTypeTwo;
    }

    public String getLegalPerson() {
        return legalPerson;
    }

    public void setLegalPerson(String legalPerson) {
        this.legalPerson = legalPerson;
    }

    public String getLegalCardType() {
        return legalCardType;
    }

    public void setLegalCardType(String legalCardType) {
        this.legalCardType = legalCardType;
    }

    public String getLegalIdCard() {
        return legalIdCard;
    }

    public void setLegalIdCard(String legalIdCard) {
        this.legalIdCard = legalIdCard;
    }

    public String getLegalCardDateStart() {
        return legalCardDateStart;
    }

    public void setLegalCardDateStart(String legalCardDateStart) {
        this.legalCardDateStart = legalCardDateStart;
    }

    public String getLegalCardDateEnd() {
        return legalCardDateEnd;
    }

    public void setLegalCardDateEnd(String legalCardDateEnd) {
        this.legalCardDateEnd = legalCardDateEnd;
    }

    public String getContactPerson() {
        return contactPerson;
    }

    public void setContactPerson(String contactPerson) {
        this.contactPerson = contactPerson;
    }

    public String getContactsCardType() {
        return contactsCardType;
    }

    public void setContactsCardType(String contactsCardType) {
        this.contactsCardType = contactsCardType;
    }

    public String getContactsIdCard() {
        return contactsIdCard;
    }

    public void setContactsIdCard(String contactsIdCard) {
        this.contactsIdCard = contactsIdCard;
    }

    public String getContactsCardDateStart() {
        return contactsCardDateStart;
    }

    public void setContactsCardDateStart(String contactsCardDateStart) {
        this.contactsCardDateStart = contactsCardDateStart;
    }

    public String getContactsCardDateEnd() {
        return contactsCardDateEnd;
    }

    public void setContactsCardDateEnd(String contactsCardDateEnd) {
        this.contactsCardDateEnd = contactsCardDateEnd;
    }

    public String getContactsPhone() {
        return contactsPhone;
    }

    public void setContactsPhone(String contactsPhone) {
        this.contactsPhone = contactsPhone;
    }

    public String getContactsEmail() {
        return contactsEmail;
    }

    public void setContactsEmail(String contactsEmail) {
        this.contactsEmail = contactsEmail;
    }

    public String getServicePhone() {
        return servicePhone;
    }

    public void setServicePhone(String servicePhone) {
        this.servicePhone = servicePhone;
    }

    public String getPayDomain() {
        return payDomain;
    }

    public void setPayDomain(String payDomain) {
        this.payDomain = payDomain;
    }

    public String getMallName() {
        return mallName;
    }

    public void setMallName(String mallName) {
        this.mallName = mallName;
    }

    public String getMerchantLink() {
        return merchantLink;
    }

    public void setMerchantLink(String merchantLink) {
        this.merchantLink = merchantLink;
    }

    public String getIcpRecord() {
        return icpRecord;
    }

    public void setIcpRecord(String icpRecord) {
        this.icpRecord = icpRecord;
    }

    public String getAlipayAccount() {
        return alipayAccount;
    }

    public void setAlipayAccount(String alipayAccount) {
        this.alipayAccount = alipayAccount;
    }

    public String getWxAppId() {
        return wxAppId;
    }

    public void setWxAppId(String wxAppId) {
        this.wxAppId = wxAppId;
    }

    public String getServerCallbackUrl() {
        return serverCallbackUrl;
    }

    public void setServerCallbackUrl(String serverCallbackUrl) {
        this.serverCallbackUrl = serverCallbackUrl;
    }

    public String getBankAccountType() {
        return bankAccountType;
    }

    public void setBankAccountType(String bankAccountType) {
        this.bankAccountType = bankAccountType;
    }

    public String getAccountName() {
        return accountName;
    }

    public void setAccountName(String accountName) {
        this.accountName = accountName;
    }

    public String getBankAccountNo() {
        return bankAccountNo;
    }

    public void setBankAccountNo(String bankAccountNo) {
        this.bankAccountNo = bankAccountNo;
    }

    public String getBankBranchCode() {
        return bankBranchCode;
    }

    public void setBankBranchCode(String bankBranchCode) {
        this.bankBranchCode = bankBranchCode;
    }

    public String getOpenAccountNo() {
        return openAccountNo;
    }

    public void setOpenAccountNo(String openAccountNo) {
        this.openAccountNo = openAccountNo;
    }

    public List<PayProductDetailsDTO> getPayProductDetails() {
        return payProductDetails;
    }

    public void setPayProductDetails(List<PayProductDetailsDTO> payProductDetails) {
        this.payProductDetails = payProductDetails;
    }

    public List<Map<String, String>> getQualificationsDetails() {
        return qualificationsDetails;
    }

    public void setQualificationsDetails(List<Map<String, String>> qualificationsDetails) {
        this.qualificationsDetails = qualificationsDetails;
    }
}
